/*
 * ProgramNode.h
 *
 *  Created on: Jan 23, 2013
 *      Author: quanpv
 */

#ifndef PROGRAMNODE_H_
#define PROGRAMNODE_H_

#include <boost/shared_ptr.hpp>
#include "CodeGenerator.h"

class ProgramNode {
public:

	virtual ~ProgramNode();
	// program node manipulation
	virtual void GetSourcePosition(int& line, int& index);
	//...

	// child manipulation
	virtual void Add(boost::shared_ptr<ProgramNode>);
	virtual void Remove(boost::shared_ptr<ProgramNode>);
	//...

	virtual void Traverse(CodeGenerator&);
protected:
	ProgramNode();
};

#endif /* PROGRAMNODE_H_ */
